﻿/*
求逆序数对 
Time Limit:1000MS  Memory Limit:32768K


Description:
逆序数定义如下：在序列S中，若iA[j]，则称A[i]与A[j]为S中的一对逆序数。

Input:
第一行给定整数N（2≤N≤50），下一行N个整数（没有重复，N=0时为输入结束）。 
Output:
输出每组序列的逆序数对。 
Sample Input:
3
1 2 3
3
3 2 1
3
1 3 2
0
Sample Output:
0
3
1
*/

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	for (int n; cin>>n && n;)
	{
		vector<int> v;
		for (int num;n-- && cin>>num; v.push_back(num));
		vector<int> sorted(v);
		sort(sorted.begin(), sorted.end());
		
		int inversion=0;
		for (int i=0, size=v.size(); i<size; ++i)
		{
		//	cout<<sorted[i]<<", "<<v[i]<<endl;
			cout<<(int)(lower_bound(sorted.begin(), sorted.end(), v[i])-sorted.begin())<<", "<<i<<endl;
		//	inversion += lower_bound(sorted.begin(), sorted.end(), v[i])-sorted.begin()-i;
		}
// 		for (vector<int>::iterator it=v.begin(); it!=v.end(); ++it)
// 		{
// 			inversion += lower_bound(sorted.begin(), sorted.end(), *it)-it;
// 		}
		cout<<inversion<<endl;
	}

	
	return 0;
}
/*
struct Comparator{
	int total;
public:
	Comparator():total(0){}
	bool operator()(const int& i1, const int& i2)
	{
		bool ret=i1<i2;
		if(ret)
		{
			cout<<i1<<", "<<i2<<endl;
			total++;
		}
		return ret;
	}
	int getTotal() const
	{
		return total;
	}

};
int descend=0;
int compare(const int& i1, const int& i2)
{
	//bool value=i1<i2;
	if(i1<i2)
	{
		cout<<i1<<", "<<i2<<endl;
		descend++;
	}
	return i1<i2;
}

int main()
{
	for (int n; cin>>n && n;)
	{
		vector<int> v;
		for (int num;n-- && cin>>num; v.push_back(num));
		Comparator comparator;
		sort(v.begin(), v.end(), comparator);
		cout<<comparator.getTotal()<<endl;
	}
	
	return 0;
}
*/